{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 任务说明\n", "\n", "- 学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系;\n", "- 学习内容:构建作者关系图,挖掘作者关系\n", "- 学习成果:论文作者知识图谱、图关系挖掘" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数据处理步骤\n", "\n", "将作者列表进行处理,并完成统计。具体步骤如下:\n", "\n", "- 将论文第一作者与其他作者(论文非第一作者)构建图;\n", "- 使用图算法统计图中作者与其他作者的联系;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 社交网络分析\n", "\n", "图是复杂网络研究中的一个重要概念。Graph是用**点**和**线**来刻画离散事物集合中的每对事物间以某种方式相联系的数学模型。Graph在现实世界中随处可见,如交通运输图、旅游图、流程图等。利用图可以描述现实生活中的许多事物,如用点可以表示交叉口,点之间的连线表示路径,这样就可以轻而易举的描绘出一个交通运输网络。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 图类型\n", "\n", "- 无向图,忽略了两节点间边的方向。\n", "\n", "- 指有向图,考虑了边的有向性。\n", "\n", "- 多重无向图,即两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 图统计指标\n", "\n", "- 度:是指和该节点相关联的边的条数,又称关联度。对于有向图,节点的入度 是指进入该节点的边的条数;节点的出度是指从该节点出发的边的条数;\n", "\n", "- 迪杰斯特拉路径:.从一个源点到其它各点的最短路径,可使用迪杰斯特拉算法来求最短路径;\n", "\n", "- 连通图:在一个无向图 G 中,若从顶点i到顶点j有路径相连,则称i和j是连通的。如果 G 是有向图,那么连接i和j的路径中所有的边都必须同向。如果图中任意两点都是连通的,那么图被称作连通图。如果此图是有向图,则称为强连通图。\n", "\n", "对于其他图算法,可以在networkx和igraph两个库中找到。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 具体代码以及讲解\n", "\n", "首先读取我们想要的数据:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:04:08.110441Z", "start_time": "2021-01-02T08:04:06.853380Z" } }, "outputs": [], "source": [ "# 导入所需的package\n", "import seaborn as sns #用于画图\n", "from bs4 import BeautifulSoup #用于爬取arxiv的数据\n", "import re #用于正则表达式,匹配字符串的模式\n", "import requests #用于网络连接,发送网络请求,使用域名获取对应信息\n", "import json #读取数据,我们的数据为json格式的\n", "import pandas as pd #数据处理,数据分析\n", "import matplotlib.pyplot as plt #画图工具" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:06:15.421139Z", "start_time": "2021-01-02T08:06:10.012723Z" } }, "outputs": [], "source": [ "def readArxivFile(path, columns=['id', 'submitter', 'authors', 'title', 'comments', 'journal-ref', 'doi',\n", " 'report-no', 'categories', 'license', 'abstract', 'versions',\n", " 'update_date', 'authors_parsed'], count=None):\n", " '''\n", " 定义读取文件的函数\n", " path: 文件路径\n", " columns: 需要选择的列\n", " count: 读取行数\n", " '''\n", " \n", " data = []\n", " with open(path, 'r') as f: \n", " for idx, line in enumerate(f): \n", " if idx == count:\n", " break\n", " \n", " d = json.loads(line)\n", " d = {col : d[col] for col in columns}\n", " data.append(d)\n", "\n", " data = pd.DataFrame(data)\n", " return data\n", "\n", "data = readArxivFile('arxiv-metadata-oai-snapshot.json', \n", " ['id', 'authors_parsed'],\n", " 200000)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "创建作者链接的无向图:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:10:35.314583Z", "start_time": "2021-01-02T08:10:35.304367Z" } }, "outputs": [], "source": [ "import networkx as nx \n", "# 创建无向图\n", "G = nx.Graph()\n", "\n", "# 只用五篇论文进行构建\n", "for row in data.iloc[:500].itertuples():\n", " authors = row[2]\n", " authors = [' '.join(x[:-1]) for x in authors]\n", " \n", " # 第一个作者 与 其他作者链接\n", " for author in authors[1:]:\n", " G.add_edge(authors[0],author) # 添加节点2,3并链接23节点" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:06:48.127213Z", "start_time": "2021-01-02T08:06:47.980587Z" } }, "outputs": [ { "data": { "image/png": "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tYP26tWrExcXx3335YVZbGws5v8tYvH0wmKtRo2hc69ZQ2GDy3q6OHK+hPskN5cudYrIbcVms7FmzRrOnz9PvXr1MJvNDBkyhFdeeYXTp08DeQM1FzYYde/evXnnnXc4f/48x48f56OPPsJiNuFsMeNU/V7MTm4k7VhJblYGttwcMhOiyThxqMja/tox/fXKzc0lPT3d/snI0AMzpUnBJyK3hS5duuDu7o6npyejR49mwYIF1K+f1yn8e++9R506dQgKCsLT05N27dpx8ODBa65r7Nix+Pn5UatWLdq1a0doaChWDzcATGYHvEPHknnqT47PeYa4D/pzduOH5GZcLLLGKzumnzp1ar73+K7s/N3d3Z3IyMhrrAW++uorXF1d7Z9LnV8/8cQT6h6tFKjnFhExvNmzZ7N06VLqPju92B3T/5U6pr996IxPRAznxIkT/PDDD+Tm5nLw4EGmT59Ojx49eDG4Di4Wh+tapzqmv30o+ETEcDIzMxk6dCgeHh48+uijdOvWjWHDhhWrY/qCqGP624sudYqI/IU6pr+zKfhERArwW1win0QcYevBBEzkvZx+iYvFjA14pK43w4Lr6EzvNqPgExEphDqmv/Mo+ERExFD0cIuIiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAxFwSciIoai4BMREUNR8ImIiKEo+ERExFAUfCIiYigKPhERMRQFn4iIGIqCT0REDEXBJyIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKGouATERFDUfCJiIihKPhERMRQFHwiImIoCj4RETEUBZ+IiBiKgk9ERAzFUt4FlJUzqRms/CWOAyeTSU7PxtPFQqCPJ72a+FHF3bm8yxMRkXJistlstvIuojTtiU3k44gjbDuUAEBGdq59novFjA0IruvNsLZ1aORvLZ8iRUSk3NxRwbd4RzSTNxwgPTuHwvbKZAIXiwOjQwIJCwq4afWJiEj5u2n3+MaPH09YWFiZrT8v9PaTllV46AHYbJCWlcPkDftZvCO6TOqJjIykbt26ZbJuERG5fqV2xufu7m7/+eLFizg7O+Pg4ADA//3f/3H48GGOHDnC4sWLS2Nz+eyJTaTv3B2kZeWUuK2rowPBqRGknI4rk9pEROTWUmpnfKmpqfbPXXfdRXh4uP37gAEDSmszAGRnZ+f7/nHEEdKzSx56AOnZOeyKPlcaZYmIyG3gpr7OkJmZyVNPPYWHhwf169fn559/ts+Lj4+nZ8+eeHt7U6tWLWbNmmWfN378eEJDQwkLC8PT05P58+fz008/0bx5cyparXwxrANnN83GlpNlbxPzbmdS/rOB4/83hGMz+nD229kUdHJrs8F/z1wg4xrBuXbtWurXr4/VaiU4OJj9+/fb55lMJo4cOWL/PmjQIMaMGQNAREQEfn5+9nnvvfceNWrUwMPDg7p167Jly5brOIIiInKjbmrwrV27lr59+5KYmEjXrl156aWXAMjNzaVLly40atSI48ePs2XLFmbOnMmmTZvsbdesWUNoaCiJiYkMGDAABwcHZsyYwZRVO7lr0Pukxewh5dcN+baXdmQX1Z+ege/fPuTi/kjS//trgXWZgGPnLl41/dChQ/Tr14+ZM2eSkJBASEgIXbp0ITMzs0T7ffDgQT766CN27dpFSkoKmzZtIiAgoETrEBGR0nFTg69Vq1aEhITg4ODAwIED2bNnDwC7du0iISGBsWPH4uTkxN13382QIUNYunSpvW3z5s3p3r07ZrMZV1dXmjRpQlBQEIfPXCTX3RuPxk+Qfuz3fNvzDArF7OKOpWJVXGo2JPPUnwXWlZ1rIzkt+6rpy5Yto1OnTrRv3x5HR0def/110tLS+PHHH0u03w4ODmRkZLBv3z6ysrIICAigdu3aJVqHiIiUjpv6AruPj4/9Zzc3N9LT08nOziYmJob4+HisVqt9fk5ODq1bt7Z/9/f3z7euQ4cO8eqrr/LvyO2kp6dBbi5OPvnDxMG9kv1nk8WZ3Kz0a9aWlZN71bT4+Hhq1qxp/242m/H39+f48eNF7+wV6tSpw8yZMxk/fjx//PEHHTt25P3338fX17dE6xERkRt3S3RZ5u/vT61atUhMTLR/UlJS2LDh8qVLk8mUr80LL7xAYGAggz5Yw12vrsDa9qkbqsHR4epD4evrS0xMjP27zWYjNjaWGjVqAHnhffHi5UukJ0+evOb6+/fvT1RUFDExMZhMJv7xj3/cUL0iInJ9bonga9asGR4eHrz33nukpaWRk5PD3r172bVr1zXbpKSk4OnpSYMAH0yJx0n5z4ZrLlsUi9mEh7MD6enp9k9GRga9e/dm/fr1bNmyhaysLKZPn46zszMtWrQAoHHjxixZsoScnBz+9a9/sW3btgLXf/DgQf7973+TkZGBi4sLrq6umM23xKEXETGcW+Kvr4ODA+vWrWP37t3UqlULLy8vnn32WZKSkq7ZZtq0aSxZsoTXOzfm1PpZVAhsfc1li2IDdm0Jx9XV1f6pXbs2devWZfHixQwfPhwvLy/Cw8MJDw/HyckJgA8++IDw8HCsVitffvkl3bt3L3D9GRkZjBo1Ci8vL3x8fDh9+jTvvPPOddcrIiLX747osuy5RT+zef+pIntsKVBuLo29zax+vVOp1yUiIreeW+KM70a9GFwHF4vDdbV1spjZu/x9OnfuzOHDh0u5MhERudXcEcHXyN/K6JBAXB1LtjuujmbGdqnPvqiNtG3blubNm/P3v/+d5OTkMqpURETK2x0RfABhQQGMDqmHq6MDf3kA9ComU14fnaND6hEWFICTkxNvvPEGe/fuJSEhgcDAQObPn09u7tWvOIiIyO3tjrjHd6Xf4hL5JOIIWw8mYALSCxiP75G63gwLrkNDP2uB6/jpp58YMWIENpuNWbNm8fDDD9+U2kVEpOzdccF3ydnUDFb+GseBEykkp2fh6eJIYHUPQh8s3gjsubm5LF68mFGjRtG+fXveffddqlevfhMqFxGRsnTHBl9pSUlJYdKkSXz++ee88cYbjBw5EmfnooNTRERuTXfMPb6ycunF+u3btxMVFcX9999PeHh4gSM9iIjIrU9nfCX0r3/9i5EjRxIQEMDMmTMJDAws75JERKQEFHzXITMzk48++ogpU6bw9NNPM3bsWCpWrFhkuzOpGaz8JY4DJ5NJTs/G08VCoI8nvZoU776jiIjcOAXfDTh16hSjR49m/fr1TJo0icGDBxfYB+ee2EQ+jjjCtkMJAGQU8KRpcF1vhrWtQyN/602qXkTEmBR8peCXX35h+PDhZGZmMmvWLHsn1gCLd0QzecMB0rNzCu1SzWQCF4sDo0MCCQsKKPuiRUQMSg+3XIcpU6bw7LPP2r83adKEH374gVdeeYXevXsTFhbG8ePH/xd6+0nLKjz0AGw2SMvKYfKG/SzeEQ3A+PHjCQsLK8M9ERExnjsy+KKiomjRogUVK1akcuXKtGzZ0j7E0fz582nVqtUNrf/NN9/ks88+yzfNZDIxYMAADhw4QM2aNXngse6MX/M7aVkl6/3lwNshjFv8b36LS7yhGkVEpGA3dQT2myE5OZnOnTsze/ZsevfuTWZmJpGRkSV69y4nJwcHh+vr9Nrd3Z3JkycT49+BqOhkKKL7tIJkZOfwScQRfIpeVERESuiOO+M7dOgQAP369cPBwQFXV1c6dOhAw4YN2b9/P88//zzbt2/H3d0dq9UKwKBBg3jhhRcICQmhQoUKbN26lfj4eHr27Im3tze1atVi1qxZ9m1ceQkyOjoak8nEggULuOuuu/Dy8uLNcRPYdfwimMycWTeD898vsrdNj/mNuI+fLnQfbMDWgwlczMzON33Hjh20aNECq9VKo0aNiIiIsM+bN28e9erVw8PDg7vvvpv/+7//s8+LiIjAz8+P6dOnU7VqVapXr868efPs89evX88DDzyAp6cn/v7+jB8/viSHXETktnLHBd+9996Lg4MDTz/9NBs3buT8+fP2efXq1WPOnDk0b96c1NRUEhMT7fOWLFnC6NGjSUlJoUWLFnTp0oVGjRpx/PhxtmzZwsyZM9m0adM1txsVFcXBgwfZsmUL/3xnMhlnjt3QfpiAfScujxJx/PhxOnXqxJgxYzh37hzTpk2jZ8+eJCTkPSlatWpV1q1bR3JyMvPmzeOVV17h119/tbc/efIkSUlJHD9+nM8//5wXX3zRfmwqVKjAwoULSUxMZP369cyePZvVq1ffUP0iIreqOy74PD09iYqKwmQyMWTIELy9venatSunTp0qtF23bt1o2bIlZrOZ33//nYSEBMaOHYuTkxN33303Q4YMYenSpddsP27cOFxdXWnUqBFV7rqXC/FHb2g/0rNzOZOSaf++ePFiQkJCCAkJwWw20759e5o2bcqGDRsA6NSpE7Vr18ZkMtG2bVs6dOhAZGSkvb2joyNjx47F0dGRkJAQ3N3dOXjwIADBwcE0aNAAs9lMw4YN6devH9u2bbuh+kVEblV3XPBB3pnd/PnziYuLY+/evcTHxzNy5MhC2/j7+9t/jomJIT4+HqvVav9MmTKl0PD08bl8R85kcSY3K/2G9yMjOydfTStWrMhXU1RUFCdOnABg48aNBAUFUblyZaxWKxs2bODMmTP29lWqVMFiuXxL183NjdTUVAB27tzJI488gre3NxUrVmTOnDn52oqI3EnuyOC7UmBgIIMGDWLv3r1A3tOXBblyur+/P7Vq1SIxMdH+SUlJsZ9dFcXBfHldJicXbFeEYM6F8wU1KZDzFaPK+/v7M3DgwHw1XbhwgVGjRpGRkUHPnj15/fXXOXXqFImJiYSEhBS7P9H+/fvTtWtXYmNjSUpK4vnnn1dfpCJyx7rjgu/AgQNMnz6duLg4AGJjY/nqq68ICgoCoFq1asTFxZGZmXnNdTRr1szeOXVaWho5OTns3bvX/kpEUdycHHD8X/g5Va1F2tFfyElLISf1PMk/ry3WOlwsZrw8nOzfw8LCCA8PZ9OmTeTk5JCenk5ERIR9XzIyMvD29sZisbBx40a+/fbbYm0H8kagqFy5Mi4uLvz0008sWbKk2G1FRG43d1zweXh4sHPnTh5++GEqVKhAUFAQ999/P9OnTwfg0UcfpX79+vj4+ODl5VXgOhwcHFi3bh27d++mVq1aeHl58eyzz5KUlFSsGrw9Lr864X7/ozhVrcXx2X/j1LK3qBDYuljrsAH3Vfe0f/f392fNmjVMmTIFb29v/P39+ec//0lubi4eHh7MmjWL3r17U6lSJZYsWULXrl2LtR2ATz75hLFjx+Lh4cHEiRPp3bt3sduKiNxu1GVZGXlu0c9s3n+qyB5bCmIyQcf7qjEnrGnpFyYiYnB33BnfreLF4Dq4WK7vJXgXiwPDguuUckUiIgIKvjLTyN/K6JBAXB1LdohdHc2MDgmkoZ+1bAoTETG4O67LslvJpVEWNDqDiMitQ/f4boLf4hL5JOIIWw8mYCLv5fRLLo3H90hdb4YF19GZnohIGVPw3URnUzNY+WscB06kkJyehaeLI4HVPQh9UCOwi4jcLAo+ERExFD3cIiIihqLgExERQ1HwiYiIoSj4RETEUBR8IiJiKAo+ERExFAWfiIgYioJPREQMRcEnIiKG8v8BFO2L7mdUeQcAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 将作者关系图进行绘制:\n", "nx.draw(G, with_labels=True)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:07:24.184788Z", "start_time": "2021-01-02T08:07:21.813522Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Balázs C.', 'Nadolsky P. M.', 'Huston J.', 'The ATLAS Collaboration ', 'Ryan P.', 'Liu Jian', 'Gray Benjamin', 'Lee Ho Nyung', 'Rabe Karin M.', 'Cooper Valentino R.', 'Johnston Karen', 'Kleis Jesper', 'Ziambaras Eleni']\n" ] } ], "source": [ "try:\n", " print(nx.dijkstra_path(G, 'Balázs C.', 'Ziambaras Eleni'))\n", "except:\n", " print('No path')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "如果我们500片论文构建图,则可以得到更加完整作者关系,并选择最大联通子图进行绘制,折线图为子图节点度值。" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "ExecuteTime": { "end_time": "2021-01-02T08:14:00.984493Z", "start_time": "2021-01-02T08:14:00.621316Z" }, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "degree_sequence = sorted([d for n, d in G.degree()], reverse=True)\n", "dmax = max(degree_sequence)\n", "\n", "plt.loglog(degree_sequence, \"b-\", marker=\"o\")\n", "plt.title(\"Degree rank plot\")\n", "plt.ylabel(\"degree\")\n", "plt.xlabel(\"rank\")\n", "\n", "# draw graph in inset\n", "plt.axes([0.45, 0.45, 0.45, 0.45])\n", "Gcc = G.subgraph(sorted(nx.connected_components(G), key=len, reverse=True)[0])\n", "\n", "pos = nx.spring_layout(Gcc)\n", "plt.axis(\"off\")\n", "nx.draw_networkx_nodes(Gcc, pos, node_size=20)\n", "nx.draw_networkx_edges(Gcc, pos, alpha=0.4)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }